#include "BT.h"
#include "UART.h"
#include <string.h>



void BT1_init(){
		GPIO_InitTypeDef GPIO_InitStructure; // 结构定义
    GPIO_InitStructure.Pin = GPIO_Pin_2 | GPIO_Pin_3; // 指定要初始化的IO
    GPIO_InitStructure.Mode = GPIO_PullUp; // 指定IO的输入方式
    GPIO_Inilize(GPIO_P5, &GPIO_InitStructure); // 初始化

}



 
void BT_connect(){
int i = 0;
        if (COM1.RX_Cnt > 0 && --COM1.RX_TimeOut == 0) {
            for (i = 0; i < COM1.RX_Cnt; i++) {
                TX4_write2buff(RX1_Buffer[i]); // 将接收到的数据发送到另外一个串口
            }
            COM1.RX_Cnt = 0;
        }
        if (COM4.RX_Cnt > 0 && --COM4.RX_TimeOut == 0) {
            for (i = 0; i < COM4.RX_Cnt; i++) {
                TX1_write2buff(RX4_Buffer[i]); // 将数据发送回去
            }
            COM4.RX_Cnt = 0;
        }
       
 

}
void  Variation(u8 packet[],int index){
	u8 x;
	x =packet[index];
	
	packet[index] =packet[index+3];
	packet[index+3]=x;
	
	x =packet[index+1];
	packet[index+1]=packet[index+2];
	packet[index+2]=x;
}


void UART4_SendPacket(float float1,float float2,float float3,float float4,float float5) {
	int i = 0;	
	u8  packet[23];
    u8 checksum = 0; // 校验位初始化
    

    // 构建数据包
    packet[0] = 0xA5; // 第一个字节
		
    memcpy(&packet[1], &float1, 4); // 将第1个浮点数放入数据包
    memcpy(&packet[5], &float2, 4); // 将第2个浮点数放入数据包
		memcpy(&packet[9], &float3, 4); // 将第3个浮点数放入数据包
		memcpy(&packet[13], &float4, 4); // 将第4个浮点数放入数据包
		memcpy(&packet[17], &float5, 4); // 将第5个浮点数放入数据包
	
		Variation(packet,1);
		Variation(packet,5);
		Variation(packet,9);
		Variation(packet,13);
		Variation(packet,17);
	
	
	
    // 计算校验位：两个浮点数的字节和
    for (i = 1; i < 21; ++i) {
        checksum += packet[i]; // packet[1] 到 packet[8]
    }

    packet[21] = checksum; // 校验位
    packet[22] = 0x5A; // 最后一个字节

    // 发送数据包
 
	
		for (i = 0; i < sizeof(packet); i++) {
       // 发送数据
        TX4_write2buff(packet[i]);
    }
		
}
